RAIS  3.2
C:/Projekte/RAIS/Specific Masks/CustomQuery_New.aspx.cs
Go to the documentation of this file.
00001 
00028 using System;
00029 using System.Collections;
00030 using System.Collections.Generic;
00031 using System.Configuration;
00032 using System.Data;
00033 using System.Linq;
00034 using System.Text;
00035 using System.Web;
00036 using System.Web.Security;
00037 using System.Web.UI;
00038 using System.Web.UI.HtmlControls;
00039 using System.Web.UI.WebControls;
00040 using System.Web.UI.WebControls.WebParts;
00041 using System.Xml.Linq;
00042 
00043 using RAIS.Common.UserManagement;
00044 using RAIS.UI.Common;
00045 
00046 using Queries = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Query>;
00047 
00048 namespace RAIS.UI.SpecificMasks
00049 {
00053     public partial class CustomQuery_New : System.Web.UI.Page
00054         {
00055                 //*********************************************************************
00056                 #region Enums
00057 
00060         enum CustomQuery_PageMode
00061                 {
00062                         view,
00063                         add,
00064                         edit
00065                 };
00066                 #endregion Enums
00067                 //*********************************************************************
00068                 #region Properties
00069 
00072                 protected UserData CurrentUser
00073                 {
00074                         get { return (UserData)this.Session[UI.Common.Constants.CURRENT_USER_TAG]; }
00075                 }
00079                 CustomQuery_PageMode CurrentCustomQuery_PageMode
00080                 {
00081                         get
00082                         {
00083                                 if (this.Session[UI.Common.Constants.CUSTOM_QUERIES_EDIT_MODE_TAG] != null)
00084                                 {
00085                                         return (CustomQuery_PageMode)this.Session[UI.Common.Constants.CUSTOM_QUERIES_EDIT_MODE_TAG];
00086                                 }
00087                                 else
00088                                         return CustomQuery_PageMode.view;
00089                         }
00090                         set
00091                         {
00092                                 this.Session[UI.Common.Constants.CUSTOM_QUERIES_EDIT_MODE_TAG] = value;
00093                                 this.SetControlsProperties();
00094                         }
00095                 }
00099                 bool EditMode
00100                 {
00101                         get 
00102                         {
00103                                 return this.CurrentCustomQuery_PageMode == CustomQuery_PageMode.edit
00104                                         || this.CurrentCustomQuery_PageMode == CustomQuery_PageMode.add;
00105                         }
00106                 }
00110                 private RAIS.Common.TableManagement.Query SelectedQuery
00111                 {
00112                         get
00113                         {
00114                                 Queries queries = (Queries)this.Session[RAIS.UI.Common.Constants.QUERIES_TAG];
00115                                 if (queries != null && queries.ContainsKey(this.LBqueries.SelectedValue))
00116                                         return queries[this.LBqueries.SelectedValue];
00117                                 else
00118                                         return null;
00119                         }
00120                 }
00124                 private string SavedQuerySelection
00125                 {
00126                         get
00127                         {
00128                                 if (this.Session[RAIS.UI.Common.Constants.QUERY_SAVED_SELECTION_TAG] != null)
00129                                         return this.Session[RAIS.UI.Common.Constants.QUERY_SAVED_SELECTION_TAG].ToString();
00130                                 else
00131                                         return string.Empty;
00132                         }
00133                         set
00134                         {
00135                                 this.Session[RAIS.UI.Common.Constants.QUERY_SAVED_SELECTION_TAG] = value;
00136                         }
00137                 }
00138                 #endregion
00139                 //*********************************************************************
00140                 #region Event handlers
00141         protected void Page_PreLoad(object sender, EventArgs e)
00142         {
00143             RAIS.UI.Common.PageManagement.TrimTextBoxValues(this);
00144         }
00151                 protected void Page_Load(object sender, EventArgs e)
00152                 {
00153                         this.Response.Cache.SetNoStore();
00154                         if (this.CurrentUser == null)
00155                                 UI.Common.AccessManagement.SignOut(this);
00156                         this.LBLresult.Text = string.Empty;
00157 
00158                         if (!this.IsPostBack)
00159                         {
00160                 this.BTNdelete.Attributes.Add("onclick", string.Format("javascript: return confirm('{0}');", RAIS.Common.Messages.DELETE_QUESTION_CUSTOM_QUERY.Replace("'", "\\'")));
00161                 this.LBLusernameNoTranslation.Text = this.CurrentUser.Name;
00162                                 string translatedMessage = RAIS.ApplicationLogicLayer.Localisation.Translate(RAIS.Common.Messages.FIELD_IS_MANDATORY,
00163                                                                                                                                                                                         RAIS.Common.Messages.TRANSLATION_CONTEXT,
00164                                                                                                                                                                                         RAIS.Common.Constants.DEFAULT_LANGUAGE,
00165                                                                                                                                                                                         this.CurrentUser.Language);
00166                                 this.RFVqueryName.ErrorMessage = translatedMessage;
00167                                 this.RFVqueryText.ErrorMessage = translatedMessage;
00168                 this.LBLadmin.ForeColor = RAIS.UI.Common.Constants.COLOR_OF_MENU_BAR_TEXT_HIGHLIGHT;
00169                 
00170                                 UI.Common.TableManagement.InitializeCustomQueryListBox(this.LBqueries, this.SavedQuerySelection);
00171 
00172                 UI.Common.TableManagement.InitializeQueryTypeList(this.DDLqueryType);
00173                                 this.CurrentCustomQuery_PageMode = CustomQuery_PageMode.view;
00174                                 this.ShowQuery();
00175 
00176                                 UI.Common.PageManagement.InitializePage(this, this.TreeView1);
00177 //                              this.LBTNmessagebox.Visible = !(this.CurrentUser.FunctionalRole.Type == FunctionRole.FunctionRoleType.Guest);
00178                         }
00179             PageManagement.InitHelpMainMenu(LBTNdefault);
00180                 }
00186                 protected void Page_Init(object sender, EventArgs e)
00187                 {
00188                         PageManagement.SetScrolableListBox(this.LBqueries, this, true);//.Focus();
00189                 }
00196                 protected void LBqueries_SelectedIndexChanged(object sender, EventArgs e)
00197                 {
00198                         this.SetControlsProperties();
00199                         this.ShowQuery();
00200                 }
00207                 protected void LNKqueryParameters_Click(object sender, EventArgs e)
00208                 {
00209                         this.SavedQuerySelection = this.LBqueries.SelectedValue;
00210                         this.Response.Redirect("~/CustomQueryParameters.aspx");
00211                 }
00218                 protected void LNKraisCustomization_Click(object sender, EventArgs e)
00219                 {
00220                         this.SavedQuerySelection = this.LBqueries.SelectedValue;
00221                         this.Response.Redirect("~/CustomQueryRaisCustomization.aspx");
00222                 }
00229                 protected void BTNadd_Click(object sender, EventArgs e)
00230                 {
00231                         this.CurrentCustomQuery_PageMode = CustomQuery_PageMode.add;
00232                         this.LBqueries.Items.Add(new ListItem(string.Empty));
00233                         this.LBqueries.SelectedIndex = LBqueries.Items.Count - 1;
00234                         this.ShowQuery();
00235                 }
00242                 protected void BTNedit_Click(object sender, EventArgs e)
00243                 {
00244                         bool success = false;
00245                         string returnMessage = string.Empty;
00246 
00247                         RAIS.Common.TableManagement.Query query = this.SelectedQuery;
00248 
00249                         success = UI.Common.TableManagement.CheckQueryAssignedObjects(query, ref returnMessage);
00250                         if (success)
00251                         {
00252                                 this.CurrentCustomQuery_PageMode = CustomQuery_PageMode.edit;
00253                         }
00254                         else
00255                         {
00256                                 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00257                                                                                                                                 returnMessage,
00258                                                                                                                                 success);
00259                         }
00260                 }
00267                 protected void BTNdelete_Click(object sender, EventArgs e)
00268                 {
00269                         bool success = false;
00270                         string returnMessage = string.Empty;
00271 
00272                         RAIS.Common.TableManagement.Query query = this.SelectedQuery;
00273 
00274                         success = UI.Common.TableManagement.CheckQueryAssignedObjects(query, ref returnMessage);
00275                         if (success)
00276                         {
00277                                 success = RAIS.ApplicationLogicLayer.TableManagement.RemoveQuery(query, ref returnMessage);
00278                                 if (success)
00279                                 {
00280                                         this.CurrentCustomQuery_PageMode = CustomQuery_PageMode.view;
00281                                         this.Session[RAIS.UI.Common.Constants.QUERIES_TAG] = null;
00282                                         string newSelection = (this.LBqueries.SelectedIndex == 0)
00283                                                 ? string.Empty
00284                                                 : this.LBqueries.Items[this.LBqueries.SelectedIndex - 1].Value;
00285                                         UI.Common.TableManagement.InitializeCustomQueryListBox(this.LBqueries, newSelection);
00286                                         this.ShowQuery();
00287                                 }
00288                         }
00289 
00290                         RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00291                                                                                                                                 returnMessage,
00292                                                                                                                                 success);
00293                 }
00300                 protected void BTNcreateQuery_Click(object sender, EventArgs e)
00301                 {
00302                         bool success = false;
00303                         string returnMessage = string.Empty;
00304 
00305                         RAIS.Common.TableManagement.Query query = GetQueryFromControls();
00306 
00307             success = UI.Common.TableManagement.CheckQueryAssignedObjects(query, ref returnMessage);
00308             if (success)
00309             {
00310                 // Validate Query Parameters
00311                 success = RAIS.ApplicationLogicLayer.TableManagement.ValidateQueryParameters(query, ref returnMessage);
00312                 if (success)
00313                 {
00314                     // Create query
00315                     success = RAIS.ApplicationLogicLayer.TableManagement.CreateQuery(query, ref returnMessage);
00316                     if (this.SelectedQuery.Type == RAIS.Common.TableManagement.Query.QueryType.DataRoleRestriction)
00317                     {
00318                         // Validate data role restriction query
00319                         success = RAIS.ApplicationLogicLayer.DataRoleRestrictionManagement.CheckQuery(query, ref returnMessage);
00320                     }
00321                 }
00322                 if (success)
00323                     this.ShowQuery();
00324             }
00325                         RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00326                                                                                                                                 returnMessage,
00327                                                                                                                                 success);
00328                 }
00335                 protected void BTNdiscard_Click(object sender, EventArgs e)
00336                 {
00337                         if (this.CurrentCustomQuery_PageMode == CustomQuery_PageMode.add)
00338                         {
00339                                 this.LBqueries.Items.Remove(this.LBqueries.SelectedItem);
00340                                 if (this.LBqueries.Items.Count != 0)
00341                                         this.LBqueries.SelectedIndex = LBqueries.Items.Count - 1;
00342                         }
00343                         this.CurrentCustomQuery_PageMode = CustomQuery_PageMode.view;
00344                         this.ShowQuery();
00345                 }
00352                 protected void BTNapply_Click(object sender, EventArgs e)
00353                 {
00354                         bool success = true;
00355                         string returnMessage = string.Empty;
00356 
00357                         // Get query properties from controls values
00358                         RAIS.Common.TableManagement.Query query = GetQueryFromControls();
00359 
00360                         // Add new or save existing query
00361                         if (this.CurrentCustomQuery_PageMode == CustomQuery_PageMode.add)
00362                         {
00363                                 success = RAIS.ApplicationLogicLayer.TableManagement.AddQuery(query, ref returnMessage);
00364                         }
00365                         else
00366                         {
00367                                 if (query.Compiled && query.ParametersChanged)
00368                                 {
00369                                         success = UI.Common.TableManagement.CheckQueryAssignedObjects(query, ref returnMessage);
00370                                         if (!success)
00371                                                 returnMessage = "You are trying to change query parameters. " + returnMessage;
00372                                 }
00373 
00374                                 if (success)
00375                                         success = RAIS.ApplicationLogicLayer.TableManagement.SaveQuery(query, ref returnMessage);
00376                         }
00377 
00378                         if (success)
00379                         {
00380                                 /*
00381                                 if ((this.CurrentCustomQuery_PageMode == CustomQuery_PageMode.add) && (query.NewParameterNames.Count == 0)
00382                                         || (this.CurrentCustomQuery_PageMode == CustomQuery_PageMode.edit) && !query.ParametersChanged && query.Compiled)
00383                                 {
00384                                         // Create query
00385                                         string createMessage = string.Empty;
00386                                         success = RAIS.ApplicationLogicLayer.TableManagement.CreateQuery(query, ref createMessage);
00387 
00388                                         if (success)
00389                                                 returnMessage += " and " + createMessage;
00390                                         else
00391                                                 returnMessage = createMessage;
00392                                 }
00393                                 else
00394                                 {
00395                                         returnMessage += RAIS.Common.Messages.QUERY_ENTER_PARAMETERS;
00396                                 }
00397                                 */
00398                                 if (query.NewParameterNames.Count == 0)
00399                                 {
00400                                         returnMessage += RAIS.Common.Messages.QUERY_COMPILE_QUERY;
00401                                 }
00402                                 else
00403                                 {
00404                                         returnMessage += RAIS.Common.Messages.QUERY_ENTER_PARAMETERS;
00405                                 }
00406 
00407                                 if (success)
00408                                 {
00409                                         // Set form into view mode
00410                                         this.CurrentCustomQuery_PageMode = CustomQuery_PageMode.view;
00411                                         this.Session[RAIS.UI.Common.Constants.QUERIES_TAG] = null;
00412                                         UI.Common.TableManagement.InitializeCustomQueryListBox(this.LBqueries, query.Name);
00413                                         this.ShowQuery();
00414                                         this.SetControlsProperties();
00415                                 }
00416                         }
00417 
00418                         RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00419                                                                                                                                 returnMessage,
00420                                                                                                                                 success);
00421                 }
00428                 protected void BTNcheckQuery_Click(object sender, EventArgs e)
00429                 {
00430                         bool success = false;
00431                         string returnMessage = string.Empty;
00432 
00433                         RAIS.Common.TableManagement.Query query = GetQueryFromControls();
00434                         success = RAIS.ApplicationLogicLayer.TableManagement.CheckQuery(query, ref returnMessage);
00435                         RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00436                                                                                                                                 returnMessage,
00437                                                                                                                                 success);
00438                 }
00445                 protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
00446                 {
00447                         UI.Common.UserManagement.ProcessTreeViewOnRedirect(this.TreeView1);
00448                 }
00455                 protected void LBTNlogout_Click(object sender, EventArgs e)
00456                 {
00457                         UI.Common.AccessManagement.SignOut(this);
00458                 }
00459                 #endregion
00460                 //*********************************************************************
00461                 #region Private helper methods
00462 
00465                 private void SetControlsProperties()
00466                 {
00467                         this.LNKqueryParameters.Enabled = !this.EditMode;
00468                         this.LBqueries.Enabled = !this.EditMode;
00469 
00470                         //this.PNLqueryControls.Enabled = this.EditMode;
00471                         this.TXTqueryName.Enabled = this.EditMode;
00472                         this.DDLqueryType.Enabled = this.EditMode;
00473                         this.TXTqueryText.Enabled = true;
00474                         this.TXTqueryText.ReadOnly = !this.EditMode;
00475                         foreach (Control control in this.PNLqueryControls.Controls)
00476                                 if (control is BaseValidator)
00477                                         ((BaseValidator)control).Enabled = this.EditMode;
00478 
00479                         this.BTNadd.Enabled = !this.EditMode;
00480                         this.BTNedit.Enabled = !this.EditMode && this.SelectedQuery != null;
00481                         this.BTNdelete.Enabled = !this.EditMode && this.SelectedQuery != null;
00482                         this.BTNcreateQuery.Enabled = !this.EditMode && this.SelectedQuery != null;
00483                         this.BTNcheckQuery.Enabled = this.EditMode;
00484                         this.BTNapply.Enabled = this.EditMode;
00485                         this.BTNdiscard.Enabled = this.EditMode;
00486 
00487                         if (this.EditMode)
00488                                 this.SetFocus(this.TXTqueryName);
00489                         else
00490                                 this.SetFocus(this.LBqueries);
00491 
00492                         UI.Common.UserManagement.EnableCommonControls(this, this.CurrentCustomQuery_PageMode == CustomQuery_PageMode.view);
00493 
00494             if (this.SelectedQuery != null && this.SelectedQuery.Type == RAIS.Common.TableManagement.Query.QueryType.DataRoleRestriction)
00495                 this.LNKqueryParameters.Enabled = false;
00496                 }
00500                 private void ShowQuery()
00501                 {
00502                         if (this.SelectedQuery == null)
00503                         {
00504                                 this.TXTqueryName.Text = string.Empty;
00505                                 this.TXTqueryText.Text = string.Empty;
00506                                 this.CBcompiled.Checked = false;
00507                         }
00508                         else
00509                         {
00510                                 this.TXTqueryName.Text = this.SelectedQuery.Name;
00511                                 this.TXTqueryText.Text = this.SelectedQuery.QueryText;
00512                                 this.DDLqueryType.SelectedValue = this.SelectedQuery.TypeText;
00513                                 this.CBcompiled.Checked = this.SelectedQuery.Compiled;
00514                         }
00515                 }
00519                 private RAIS.Common.TableManagement.Query GetQueryFromControls()
00520                 {
00521                         RAIS.Common.TableManagement.Query query = null;
00522 
00523                         if (this.SelectedQuery == null)
00524                         {
00525                                 query = new RAIS.Common.TableManagement.Query();
00526                         }
00527                         else
00528                         {
00529                                 query = this.SelectedQuery;
00530                         }
00531                         query.Name = this.TXTqueryName.Text;
00532                         query.QueryText = this.TXTqueryText.Text;
00533                         query.TypeText = this.DDLqueryType.SelectedValue;
00534 
00535                         return query;
00536                 }
00537                 #endregion
00538         }
00539 }